export interface WrapperProsp {
  /**
   * @description 输入框的值，数组的长度决定了输入框的数量
   * @default ['', '', '', '']
   */
  modelValue?: string[]

  /**
   * @description 添加错误类名，一般配合表单校验使用
   * @default false
   */
  error?: boolean

  /**
   * @description 输入框的大小
   * @default 'default'
   */
  size?: 'large' | 'default' | 'small'

  /**
   * @description 输入框占位文本
   * @default 'o'
   */
  placeholder?: string

  /**
   * @description 输入框是否只读
   * @default false
   */
  readonly?: boolean

  /**
   * @description 输入框是否禁用
   * @default false
   */
  disabled?: boolean

  /**
   * @description 输入框是否为密码框
   * @default false
   */
  mask?: boolean

  /**
   * @description 输入框是否在移动端处理一次性验证码
   * @default false
   */
  otp?: boolean

  /**
   * @description numeric 在移动设备上提供数字键盘
   * @default 'text'
   */
  type?: 'numeric' | 'text'
}

export interface WrapperEmits {
  /**
   * @description pin 码输入完整时触发
   * @returns 输入框的值
   */
  complete: [string[]]

  /**
   * @description pin 码输入不完整时触发
   * @returns 输入框的值
   */
  incomplete: [string[]]
}

export interface PinFieldEmits {
  /**
   * @description 输入框获取焦点时触发
   * @returns 输入框的索引
   */
  focus: [number]

  /**
   * @description 输入框失去焦点时触发
   * @returns 输入框的索引
   */
  blur: [number]
}

export interface PinFieldExposes {
  /**
   * @description 清空输入框的值
   */
  clear(): void

  /**
   * @description 输入框失去焦点
   * @param index 失去焦点的索引
   * @default 0
   */
  blur(index?: number): void

  /**
   * @description 输入框获取焦点
   * @param index 获取焦点的索引
   * @default 0
   */
  focus(index?: number): void
}
